import http from '@/utils/http'

// 封装的post方法。
/*
  parse：对象，请求参数，包括url，timeout，method，docker，
  fun：回调函数，只处理res.Code===200时的情况。注意。。。 /docker 接口的Code判断可能并不准确
  taht：必传，this对象
  示例：
  const docker = 'curl --unix-socket /var/run/docker.sock -s "http:/v1.40/info'
  post({ docker }, (res) => {
    console.log(res)
  }, this)
*/
const post = (parse, fun, that, data) => {
  if (!parse.url) {
    parse.url = '/docker'
  }
  if (!parse.timeout) {
    parse.timeout = 600000
  }
  if (!parse.method) {
    parse.method = 'POST'
  }
  http({
    url: parse.url,
    method: parse.method,
    timeout: parse.timeout,
    data: parse.docker ?  {
      docker: parse.docker,
      ...data
    } : {
      ...data
    }
  }).then(res => {
    if (res.Code === 200) {
      !res.Data && (res.Data = '{}')
      fun(JSON.parse(res.Data))
    } else if (res.Code === 401) {
      that.$message({
        showClose: true,
        message: '登录验证失败，请重新登录！',
        type: 'error'
      })
      that.$router.push('/Login')
    } else {
      let str = '请求失败，请重试！'
      if (res.Msg) {
        str = res.Msg
      }
      that.$message({
        showClose: true,
        message: str,
        type: 'error'
      })
    }
  }).catch((err) => {
    that.$message({
      showClose: true,
      message: err,
      type: 'error'
    })
  })
}

export default post
